Skip to content

SC-17: wire rsync:// daemon URLs into the main sync command - #9

Merged
iampryce merged 1 commit into
mainfrom
sc-17-daemon-cli-wiring
Aug 1, 2026
Merged

SC-17: wire rsync:// daemon URLs into the main sync command#9
iampryce merged 1 commit into
mainfrom
sc-17-daemon-cli-wiring

Conversation

@iampryce

@iampryce iampryce commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

rsync://host/module is now a real destination for grsync SRC... DEST, via new daemon.DialClient wired into the same pipeline.Sender every destination uses. Credentials verified against real rsync's actual behavior: username from URL/USER/LOGNAME/nobody, password from --password-file/RSYNC_PASSWORD/interactive prompt - no --password flag, matching rsync's deliberate omission to avoid ps-visibility exposure. Password resolution is lazy, only triggered on AUTHREQD, proven by test.

Two bugs found: ParseRemotePath silently mis-parsed rsync://host/module as SSH syntax (host=rsync) - fixed, rejecting any "://" with a regression test. DialGreeting/DialAuth/DialModule were built around an unexported type, unreachable despite being exported - fixed via DialClient.

Scope gaps (documented in README, not separate tickets): sub-path syncing within a module, pulling from an rsync:// source, max connections enforcement.

Clean on native Windows and cross-compiled Linux.

rsync://host/module is now a real destination for grsync SRC... DEST,
via new daemon.DialClient wired into the same pipeline.Sender every
destination uses. Credentials verified against real rsync's actual
behavior: username from URL/USER/LOGNAME/nobody, password from
--password-file/RSYNC_PASSWORD/interactive prompt - no --password flag,
matching rsync's deliberate omission to avoid ps-visibility exposure.
Password resolution is lazy, only triggered on AUTHREQD, proven by test.

Two bugs found: ParseRemotePath silently mis-parsed rsync://host/module
as SSH syntax (host=rsync) - fixed, rejecting any "://" with a
regression test. DialGreeting/DialAuth/DialModule were built around an
unexported type, unreachable despite being exported - fixed via
DialClient.

Scope gaps (documented in README, not separate tickets): sub-path
syncing within a module, pulling from an rsync:// source, max
connections enforcement.

Clean on native Windows and cross-compiled Linux.
@iampryce
iampryce requested a review from jasonmiller-cc August 1, 2026 10:24
@iampryce
iampryce merged commit 64cc94b into main Aug 1, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant